package lock8;

import java.util.concurrent.TimeUnit;

/**
 * 8锁问题
 *
 * 7. 2个对象 调用两个静态锁方法    先执行发短信还是打电话？   // todo 先执行发短信在打电话  因为他们两个调用的都是当前类的静态方法 也就是类锁，而类锁是唯一一个的 所以,他们两是公用这把锁  所以先执行发短信在打电话。
 * 8. 2个对象  1个调用普通 1个静态  先执行发短信还是打电话？    //todo 先执行打电话 在发短信 。他们两个的锁不一样 一个是类锁 一个是调用锁。 所以互不干扰。
 */
public class Test4 {

    public static void main(String[] args) {
        phone phone1 = new phone();
        phone phone2 = new phone();
        new Thread(()->{
            phone1.sendMs();
        },"A").start();

        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        new Thread(()->{
            phone2.call();
        },"B").start();
    }



}
class phone{


    public  synchronized void sendMs(){
        try {
            TimeUnit.SECONDS.sleep(4);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println("发送短信 ！！！");
    }


    public static synchronized void call(){
        System.out.println("打电话 !!!");
    }


}
